www.gusucode.com > 一个多线程串口数据接收类 VC++环境源码程序 > 一个多线程串口数据接收类 VC++环境/LsCommDemo(for vc6)/LsCommDemo(for vc6)/ComPropertyDlg.cpp
// ComPropertyDlg.cpp : 实现文件 // Download by http://www.codesc.net #include "stdafx.h" #include "ComPropertyDlg.h" // CComPropertyDlg 对话框 IMPLEMENT_DYNAMIC(CComPropertyDlg, CDialog) CComPropertyDlg::CComPropertyDlg(CWnd* pParent /*=NULL*/) : CDialog(CComPropertyDlg::IDD, pParent) { this->m_pDcb = NULL; this->m_pPortNum = NULL; } CComPropertyDlg::~CComPropertyDlg() { } void CComPropertyDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CComPropertyDlg, CDialog) ON_BN_CLICKED(IDOK, OnBnClickedOk) END_MESSAGE_MAP() // CComPropertyDlg 消息处理程序 BOOL CComPropertyDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 //串口号 CComboBox*pComb=NULL; pComb=(CComboBox*)this->GetDlgItem(IDC_COMBO1); pComb->AddString("Com1"); pComb->AddString("Com2"); pComb->AddString("Com3"); CString c; c.Format("Com%d",*this->m_pPortNum); int nIndex=pComb->FindString(0,c); pComb->SetCurSel(nIndex); //波特率 pComb=(CComboBox*)this->GetDlgItem(IDC_COMBO2); pComb->AddString("1200"); pComb->AddString("2400"); pComb->AddString("4800"); pComb->AddString("9600"); c.Format("%d",this->m_pDcb->BaudRate); nIndex=pComb->FindString(0,c); pComb->SetCurSel(nIndex); //数据位 pComb=(CComboBox*)this->GetDlgItem(IDC_COMBO3); pComb->AddString("4"); pComb->AddString("5"); pComb->AddString("6"); pComb->AddString("7"); pComb->AddString("8"); c.Format("%d",this->m_pDcb->ByteSize); nIndex=pComb->FindString(0,c); pComb->SetCurSel(nIndex); //停止位 pComb=(CComboBox*)this->GetDlgItem(IDC_COMBO4); pComb->AddString("1"); pComb->AddString("1.5"); pComb->AddString("2"); nIndex=this->m_pDcb->StopBits; pComb->SetCurSel(nIndex); //校验 pComb=(CComboBox*)this->GetDlgItem(IDC_COMBO5); pComb->AddString("无校验"); pComb->AddString("奇校验"); pComb->AddString("偶校验"); nIndex=this->m_pDcb->Parity; pComb->SetCurSel(nIndex); this->m_BtnOk.SubclassDlgItem(IDOK,this); this->m_BtnOk.SetIcon(IDI_OK); this->m_BtnOk.SetFlat(false); this->m_BtnCancel.SubclassDlgItem(IDCANCEL,this); this->m_BtnCancel.SetIcon(IDI_CANCEL); this->m_BtnCancel.SetFlat(false); return TRUE; // return TRUE unless you set the focus to a control // 异常:OCX 属性页应返回 FALSE } void CComPropertyDlg::SetDCB(DCB* dcb) { this->m_pDcb = dcb; } void CComPropertyDlg::SetPortNum(int* pPort) { this->m_pPortNum = pPort; } void CComPropertyDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 /*1.串口 */ CComboBox*pComb=NULL; pComb=(CComboBox*)this->GetDlgItem(IDC_COMBO1); if(pComb->GetCurSel()<0) { ::AfxMessageBox("串口不能为空!"); return; } *this->m_pPortNum = pComb->GetCurSel()+1; /*2. */ int index=-1; int i=0; CString value; pComb=(CComboBox*)this->GetDlgItem(IDC_COMBO2); index=pComb->GetCurSel(); if(index<0) { ::AfxMessageBox("波特率不能为空!"); return; } pComb->GetLBText(index,value); i=atoi(value); this->m_pDcb->BaudRate = i; /*3. */ pComb=(CComboBox*)this->GetDlgItem(IDC_COMBO3); index=pComb->GetCurSel(); if(index<0) { ::AfxMessageBox("数据位不能为空!"); return; } pComb->GetLBText(index,value); i=atoi(value); this->m_pDcb->ByteSize = i; /*4. */ pComb=(CComboBox*)this->GetDlgItem(IDC_COMBO4); index=pComb->GetCurSel(); if(index<0) { ::AfxMessageBox("停止位不能为空!"); return; } this->m_pDcb->StopBits = index; /*5. */ pComb=(CComboBox*)this->GetDlgItem(IDC_COMBO5); index=pComb->GetCurSel(); if(index<0) { ::AfxMessageBox("校验不能为空!"); return; } this->m_pDcb->Parity = index; OnOK(); }